package ar.com.profertil.galicia.analizer;

import java.io.Serializable;

/**
 * The Class AnalizerRecibirCheques.
 *
 * @author augusto.ferrari@softtek.com
 * 
 * Esta clase presenta las funcionalidades para recuperar las diferentes estructuras de la cadena de entrada.
 */
public class AnalizerRecibirCheques implements Serializable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;
	
	/**
	 * Instantiates a new analizer recibir cheques.
	 */
	public AnalizerRecibirCheques() {
	}
	
	//Metodo para recuperar el Header. Siempre hay 1 Header.
	/**
	 * Gets the header.
	 *
	 * @param cadena the cadena
	 * @return the header
	 */
	public String getHeader(String cadena) {
		
		String output;
		
		output = cadena.substring(0, 300);
		
		return output;
	}

	//Metodo para recuperar los detalles. Puede haber 0 o muchos Detalles.
	/**
	 * Gets the detalles.
	 *
	 * @param cadena the cadena
	 * @return the detalles
	 */
	public String[] getDetalles(String cadena) {
		
		String[] output;
		String subcadena;
		int longitud;
		int cantidadDetalles = 0;
		
		longitud = cadena.length();
		
		if (longitud - 600 > 0)
		{
			cantidadDetalles = ((longitud) - 600) / 300;
		}
		
		output = new String[cantidadDetalles];
		
		subcadena = cadena.substring(300, longitud - 300);
		
		int indexA = 0;
		int indexB = 300;
		for(int i = 0 ; i < cantidadDetalles ; i++) {
			output[i] = subcadena.substring(indexA, indexB);
			indexA += 300;
			indexB += 300;
		}
		
		return output;
	}
	
	//Metodo para recuperar el Trailer. Siempre hay 1 Trailer.
	/**
	 * Gets the trailer.
	 *
	 * @param cadena the cadena
	 * @return the trailer
	 */
	public String getTrailer(String cadena) {
		
		String output;
		int longitud = cadena.length();
		
		output = cadena.substring(longitud - 300, longitud);
		
		return output;
	}
}
